Demand forecasting with large collections of time series data

ABSTRACT

Demand forecasting in which sets of first order differences are determined for collections of time series data for products. The first order differences identify how values within the collections of time series data change over time. The sets of first order differences are normalized to form sets of scaled first order differences such that a same scale is present between the scaled first order differences. Bins with dynamic ranges are determined for the scaled first order differences based on a distribution of the scaled first order differences; The scaled first order differences are placed into the bins to form sets of binned values in which binned values in the sets of binned values are based on numbers of scaled first order differences in the bins. The time series data are grouped into segments based on a correlation between the sets of binned values for the time series data.

BACKGROUND 1. Field

The disclosure relates generally to an improved computer system and,more specifically, to a method, apparatus, system, and computer programproduct for demand forecasting of products.

2. Description of the Related Art

Knowing a future demand for a product is desirable when planning formanufacturing of products or purchasing products for resale. Demandforecasting can be used to predict future demand for products. Demandforecasting is a process in which historical sales data for a productcan be used to determine a forecast of customer demand for that product.This type of forecasting can be used to estimate an amount of product,such as goods and services, which customers may purchase at a futurepoint in time.

Time series analysis is commonly used in demand forecasting ofindividual products. Time series analysis involves analyzing time seriesdata, which are series of points indexed in a time order. This analysiscan be used to create forecasting models that predict future values suchas demand for products.

SUMMARY

According to one embodiment of the present invention, a method fordemand forecasting is present. Sets of first order differences aredetermined by a computer system for time series data within collectionsof time series data for products. The sets of first order differencesidentify how values in the time series data within the collections oftime series data change over time. The sets of first order differencesfor the time series data are normalized by the computer system to formsets of scaled first order differences such that a same scale is presentbetween the sets of scaled first order differences. Bins with dynamicranges are determined by the computer system for the sets of scaledfirst order differences, wherein dynamic ranges are based on adistribution of the sets of scaled first order differences. The sets ofscaled first order differences are placed into the bins by the computersystem to form sets of binned values for the collections of time seriesdata in which binned values in the sets of binned values are based on anumber of scaled first order differences in the bins. The collections oftime series data for the products are grouped into segments by thecomputer system based on a correlation between the sets of binned valuesfor the collections of time series data.

According to another embodiment of the present invention, a demandforecasting system comprises a computer system. The computer systemoperates to determine sets of first order differences for time seriesdata within collections of time series data for products. The sets offirst order differences identify how values in the time series datawithin the collections of time series data change over time. Thecomputer system normalizes the sets of first order differences for thetime series data to form sets of scaled first order differences suchthat a same scale is present between the sets of scaled first orderdifferences. The computer system determines bins with dynamic ranges forthe sets of scaled first order differences, wherein the dynamic rangesare based on a distribution of the sets of scaled first orderdifferences. The computer system places the sets of scaled first orderdifferences into the bins to form sets of binned values for thecollections of time series data in which binned values in the sets ofbinned values are based on a number of scaled first order differences inthe bins. The computer system groups the collections of time series datafor the products into segments based on a correlation between the setsof binned values for the collections of time series data.

According to yet another embodiment of the present invention, a computerprogram product for demand forecasting comprises a computer-readablestorage media with first program code, second program code, thirdprogram code, fourth program code, and fifth program code stored on thecomputer-readable storage media. The first program code is executable bya computer system to cause the computer system to determine sets offirst order differences for time series data within collections of timeseries data for products. The sets of first order differences identifyhow values in the time series data within the collections of time seriesdata change over time. The second program code is executable by thecomputer system to cause the computer system to normalize the sets offirst order differences for the time series data to form sets of scaledfirst order differences such that a same scale is present between thesets of scaled first order differences. The third program code isexecutable the computer system to cause the computer system to determinebins with dynamic ranges for the sets of scaled first order differences,wherein the dynamic ranges are based on a distribution of the sets ofscaled first order differences. The fourth program code is executable bythe computer system to cause the computer system to place the sets ofscaled first order differences into the bins to form sets of binnedvalues for the collections of time series data in which binned values inthe sets of binned values are based on a number of scaled first orderdifferences in the bins. The fifth program code is executable by thecomputer system to cause the computer system to group the collections oftime series data for the products into segments based on a correlationbetween the sets of binned values for the collections of time seriesdata.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a forecasting environment in accordancewith an illustrative embodiment;

FIG. 2 is an illustration of a process for generating bins with dynamicranges in accordance with an illustrative embodiment;

FIG. 3 is an illustration of parts under a distribution curve fordetermining dynamic ranges of bins in accordance with an illustrativeembodiment;

FIG. 4 is an illustration of bins with panic ranges in accordance withan illustrative embodiment;

FIG. 5 is a flowchart of a process for demand forecasting in accordancewith an illustrative embodiment;

FIG. 6 is a flowchart of a process for grouping collections of timeseries data into segments in accordance with an illustrative embodiment;

FIG. 7 is a flowchart of a process for creating a forecasting model froman initial collection of time series data in accordance with anillustrative embodiment;

FIG. 8 is a flowchart of a process for creating bins with dynamic rangesin accordance with an illustrative embodiment; and

FIG. 9 is a block diagram of a data processing system in accordance withan illustrative embodiment.

DETAILED DESCRIPTION

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer-readable storagemedium (or media) having computer-readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer-readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer-readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer-readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer-readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer-readable program instructions described herein can bedownloaded to respective computing/processing devices from acomputer-readable storage medium or to an external computer or externalstorage device via a network, for example, the Internet, a local areanetwork, a wide area network and/or a wireless network. The network maycomprise copper transmission cables, optical transmission fibers,wireless transmission, routers, firewalls, switches, gateway computers,and/or edge servers. A network adapter card or network interface in eachcomputing/processing device receives computer-readable programinstructions from the network and forwards the computer-readable programinstructions for storage in a computer-readable storage medium withinthe respective computing/processing device.

Computer-readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer-readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer, or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer-readable program instructions may be provided to aprocessor of a computer, or other programmable data processing apparatusto produce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks. Thesecomputer-readable program instructions may also be stored in acomputer-readable storage medium that can direct a computer, aprogrammable data processing apparatus, and/or other devices to functionin a particular manner, such that the computer-readable storage mediumhaving instructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks.

The computer-readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be accomplished as one step, executed concurrently,substantially concurrently, in a partially or wholly temporallyoverlapping manner, or the blocks may sometimes be executed in thereverse order, depending upon the functionality involved. It will alsobe noted that each block of the block diagrams and/or flowchartillustration, and combinations of blocks in the block diagrams and/orflowchart illustration, can be implemented by special purposehardware-based systems that perform the specified functions or acts orcarry out combinations of special purpose hardware and computerinstructions.

The illustrative embodiments recognize and take into account a number ofdifferent considerations. For example, the illustrative embodimentsrecognize and take into account that many challenges are present indemand forecasting when dealing with a large number of products. Forexample, the illustrative embodiments recognize and take into accountissues such as how can noise be reduced and the amount of input withdealing with a large number of products are present. Further, theillustrative embodiments also recognize and take into account that thequestion of how to scale a forecasting solution to large numbers ofproducts, such as tens of thousands of products, is present.

The illustrative embodiments recognize and take into account that aforecasting model can be created for each product. The illustrativeembodiments recognize and take into account that creating a model foreach product can be infeasible with respect to the amount of time andeffort.

The illustrative embodiments recognize and take into account that aforecasting model can be created for all of the products of interest.The illustrative embodiments recognize and take into account thatgrouping all of the products together to create a model can result inthe model having too much noise in the input data. As a result, theillustrative embodiments recognize and take into account that this typeof model can fail to recognize different patterns more often thandesired.

Therefore, it would be desirable to have a method and apparatus thattake into account at least some of the issues discussed above, as wellas other possible issues. For example, it would be desirable to have amethod and apparatus that overcome a technical problem with groupingcollections of time series data to perform demand forecasting for largenumbers of products.

The illustrative embodiments recognize and take into account thatcollections of time series data for products can be grouped intomultiple groups, also referred to as segments. A forecasting model canbe created for each segment. The illustrative embodiments recognize andtake into account that currently used methodologies for creatingsegments of time series data result in low silhouette scores. In otherwords, the similarity between collections of time series data in asegment may not be as high as desired. A set of forecasting models arethen built. One forecasting model is created for each segment.

Thus, the illustrative embodiments provide a method, apparatus, system,and computer program product for grouping time series data into segmentsfor generating forecast models. In one illustrative example, a method ispresent for demand forecasting.

With reference now to the figures and, in particular, with reference toFIG. 1, a block diagram of a forecasting environment is depicted inaccordance with an illustrative embodiment. In this illustrativeexample, forecasting environment 100 is an environment in whichforecasting models 102 are used in predictions such as demandforecasting. In this illustrative example, demand forecasting system 104operates to create forecasting models 102.

As depicted, demand forecasting system 104 comprises computer system 106and model manager 108. Model manager 108 is located in computer system106.

Model manager 108 can be implemented in software, hardware, firmware, ora combination thereof. When software is used, the operations performedby model manager 108 can be implemented in program code configured torun on hardware, such as a processor unit. When firmware is used, theoperations performed by model manager 108 can be implemented in programcode and data and stored in persistent memory to run on a processorunit. When hardware is employed, the hardware may include circuits thatoperate to perform the operations in model manager 108.

In the illustrative examples, the hardware may take a form selected fromat least one of a circuit system, an integrated circuit, anapplication-specific integrated circuit (ASIC), a programmable logicdevice, or some other suitable type of hardware configured to perform anumber of operations. With a programmable logic device, the device canbe configured to perform the number of operations. The device can bereconfigured at a later time or can be permanently configured to performthe number of operations. Programmable logic devices include, forexample, a programmable logic array, a programmable array logic, a fieldprogrammable logic array, a field programmable gate array, and othersuitable hardware devices. Additionally, the processes can beimplemented in organic components integrated with inorganic componentsand can be comprised entirely of organic components, excluding a humanbeing. For example, the processes can be implemented as circuits inorganic semiconductors.

Computer system 106 is a physical hardware system and includes one ormore data processing systems. When more than one data processing systemis present in computer system 106, those data processing systems are incommunication with each other using a communications medium. Thecommunications medium can be a network. The data processing systems canbe selected from at least one of a computer, a server computer, a tabletcomputer, or some other suitable data processing system.

As used herein, “a number of,” when used with reference to items, meansone or more items. For example, “a number of different types ofnetworks” is one or more different types of networks.

Further, the phrase “at least one of,” when used with a list of items,means different combinations of one or more of the listed items can beused, and only one of each item in the list may be needed. In otherwords, “at least one of” means any combination of items and number ofitems may be used from the list, but not all of the items in the listare required. The item can be a particular object, a thing, or acategory.

For example, without limitation, “at least one of item A, item B, oritem C” may include item A, item A and item B, or item B. This examplealso may include item A, item B, and item C or item B and item C. Ofcourse, any combinations of these items can be present. In someillustrative examples, “at least one of” can be, for example, withoutlimitation, two of item A; one of item B; and ten of item C; four ofitem B and seven of item C; or other suitable combinations.

In the illustrative example, model manager 108 in computer system 106operates to create forecasting models 102 from collections of timeseries data 110 for products 112. A collection of time series data incollections of time series data 110 is time series data for a product inproducts 112. In this illustrative example, each collection of timeseries data corresponds to a product. As depicted, a product in products112 can be a service, an item, and combinations thereof. Products 112can include both good and services. A product in products 112 caninclude both goods and services. For example, a product can include anitem such as software or a vehicle, and the service can be support forthe software or vehicle that is a part of the product.

In this illustrative example, time series data 114 in collections oftime series data 110 is a series of data points that are indexed in atime order. Collections of time series data 110 can be processed bymodel manager 108 to generate forecasting models 102. Each forecastingmodel can predict the future value of items such as demand for a productin products 112.

In this illustrative example, model manager 108 can group collections oftime series data 110 into segments 116. As depicted, each segment caninclude one or more collections of time series data 110. Each segment insegments 116 can be used to create a forecasting model in forecastingmodels 102.

As depicted, model manager 108 determines sets of first orderdifferences 118 for time series data 114 within collections of timeseries data 110 for products 112. In this illustrative example, sets offirst order differences 118 identify how values 121 in time series data114 within collections of time series data 110 change over time. Inother words, scaled first order differences 134 indicate how values 121are changing from time period to time period in time series data 114. Inthis illustrative example, the changes can be from one period of time toa prior or subsequent period of time. In other words, a first orderdifference is the change in value from one data point to an adjacentdata point in time series data 114.

In this illustrative example, model manager 108 normalizes sets of firstorder differences 118 for time series data 114 to form sets of scaledfirst order differences 122. The normalization can be performed suchthat a same scale is present between sets of scaled first orderdifferences 122.

Further, model manager 108 determines bins 124 with dynamic ranges 126for sets of scaled first order differences 122. In this illustrativeexample, dynamic ranges 126 are based on distribution 128 of sets ofscaled first order differences 122. As depicted, distribution 128 is thedistribution of values 120 in sets of scaled first order differences122. For example, dynamic ranges 126 are selected to optimize an outcomeof a set of variables under a set of constraints in a decisionoptimization model such that changes in first order differences greaterthan a threshold are isolated by bins 124.

The threshold can be selected based on when changes have a standarddeviation that is greater than some desired amount. The threshold can beused to isolate extreme changes in scaled first order differences 134 insets of scaled first order differences 122 when scaled first orderdifferences 134 are placed into bins 124. The isolation can be such thatthese changes in scaled first order differences 134 are located in oneor more bins in bins 124 that separate these undesired values from othervalues of scaled first order differences 134.

Model manager 108 places sets of scaled first order differences 122 intobins 124 to form sets of binned values 130 for collections of timeseries data 110 in which binned values 132 in sets of binned values 130are based on a number of scaled first order differences 134 in bins 124.In the illustrative example, binned values 132 in a bin in bins 124 forma set of binned values in sets of binned values 130. In other words,each set of binned values in sets of binned values 130 corresponds to abin in bins 124.

In this illustrative example, model manager 108 groups collections oftime series data 110 for products 112 into segments 116 based oncorrelation 136 between sets of binned values 130 for collections oftime series data 110. In this illustrative example, model manager 108can perform grouping of time series data 110 into segments 116 in anumber of different ways.

In the illustrative example, model manager 108 groups collections oftime series data 110 for products 112 into initial groups 138 based oncorrelation values 140 for sets of binned values 130 for collections oftime series data 110 being within selected threshold 142 of each other.Model manager 108 can then create subgroups 144 from initial groups 138based on slopes 146 for collections of time series data 110 in initialgroups 138. Subgroups 144 form segments 116. In the illustrativeexample, each collection of time series data can be analyzed todetermine a slope for the collection of time series data. In theillustrative example, slopes 146 can have positive values or negativevalues. These values of the slopes can be used to determine whichsubgroup a collection of time series data is placed from an initialgroup in initial groups 138.

Model manager 108 can create forecasting models 102 for products 112from segments 116 in which collections of time series data 110 arelocated. The different steps performed by model manager 108 in computersystem 106 can reduce the noise present when creating forecasting models102 from segments 116 of collections of time series data 110.

In one illustrative example, one or more solutions are present thatovercome a problem with at least one of noise or accuracy issuesinvolved with current segmenting of time series data to createforecasting models. As a result, one or more solutions described in theillustrative examples may provide an effect of providing an automatedprocess for segmenting time series data in a manner that reduces noise,increases accuracy, or both reduces noise and increases accuracy offorecasting models 102. With the illustrative example, prior knowledgeof what signals should be expected in the data is not needed. Forexample, if 2,000 products in 1,500 unique signals are present,employing a K-means iteration from 1 through 2,000 in identifying theideal 1,500 number of clusters is impractical with current techniques.

Thus, in the illustrative example, the first order difference isextracted to determine how the values are changing from time period totime period instead of just comparing across absolute values as withcurrent techniques. Further, the illustrative example normalizes thesevalues to express their relative magnitude of change over time. Thefirst order differences are then placed into bins using dynamic rangebinning in an automated fashion to isolate the extreme changes in thetime series. The dynamic range of bins can be determined dynamically byselecting sizes for the bins to achieve desired results such asisolating changes that are greater than desired in the collections oftime series data as determined from sets of scaled first orderdifferences. Further, the binning of data in bins with dynamic rangesalso can be used to reduce the granularity of the data. The correlationbetween the binned data is determined, and products that have adesirable correlation can be grouped into segments for use in buildingforecasting models on a per segment basis.

Further, the illustrative examples can also introduce time series datafor new products or other products not originally considered ingenerating forecasting models 102. For example, model manager 108 canidentify additional collection of time series data 148 for additionalproduct 150. Model manager 108 can identify current product 152 inproducts 112 with a set of binned values in sets of binned values 130having a highest correlation to additional set of binned values 154 forset of scaled first order differences 156 for additional collection oftime series data 148.

As depicted, model manager 108 can place additional collection of timeseries data 148 into current segment 158 for current product 152 insegments 116 when the highest correlation is within a threshold. Modelmanager 108 can place additional collection of time series data 148 intonew segment 160 when the highest correlation is not within thethreshold. The threshold can be selected based on the collection of timeseries data available. Factors include, for example, how correlated twotime series should be for inclusion in the same segment based on thedomain. For example, a default value for correlation can be 0.8.

As depicted, model manager 108 can create new forecasting model 162 forcollections of time series data 110 in current segment 158 whenadditional collection of time series data 148 is placed into currentsegment 158.

Model manager 108 can create new forecasting model 162 for additionalcollection of time series data 148 in new segment 160 when additionalcollection of time series data 148 is placed into new segment 160.

In the illustrative examples, collections of time series data 110 forproducts 112 grouped into segments 116 can have at least one of lessnoise or an increased accuracy as compared to current techniques used tocreate segments from time series data for products.

Computer system 106 can be configured to perform at least one of thesteps, operations, or actions described in the different illustrativeexamples using software, hardware, firmware, or a combination thereof.As a result, computer system 106 operates as a special purpose computersystem in which model manager 108 in computer system 106 enablessegmenting collections of time series data in a manner that at least oneof reduces noise or increases accuracy in predicting demand forproducts. In particular, model manager 108 turns computer system 106into a special purpose computer system as compared to currentlyavailable general computer systems that do not have model manager 108.

The illustration of forecasting environment 100 in FIG. 1 is not meantto imply physical or architectural limitations to the manner in which anillustrative embodiment can be implemented. Other components in additionto or in place of the ones illustrated may be used. Some components maybe unnecessary. Also, the blocks are presented to illustrate somefunctional components. One or more of these blocks may be combined,divided, or combined and divided into different blocks when implementedin an illustrative embodiment.

For example, demand forecasting system 104 is directed towardsgenerating forecasting models 102 that can be used to perform demandforecasting. The illustrative examples can be applied to other uses. Forexample, model manager 108 can be used to create models for applicationsselected from at least one of clustering, association mining, patternmatching, or other suitable applications.

Turning next to FIG. 2, an illustration of a distribution curve isdepicted in accordance with an illustrative embodiment. As depicted,graph 200 has distribution curve 202 shown on x-axis 204 and y-axis 206.In this illustrative example, x-axis 204 represents scaled first orderdifferences in sets of scaled first order differences for collections oftime series data for products. In this depicted example, y-axis 206represents the number of first order differences for a particular scaledvalue on x-axis 204 for the collections of time series data for theproducts.

Distribution curve 202 can be divided into bins in which the bins haveranges that are dynamically selected. For example, distribution curve200 can be divided into six parts for six bins. In this illustrativeexample, symmetrical divisions can be used in which the symmetricaldivisions have a symmetry about y-axis 206. With six bins, distributioncurve 202 can be divided into six parts with three parts on each side ofy-axis 206. Each side of y-axis 206 can have additional symmetry inwhich the bins around the central bin contain equal data distribution.In this illustrative example, the six bins can be −3, −2, −1, 1, 2, and3.

In this illustrative example, the number of variables used to determinedynamic ranges are identified as followed when symmetry is present:

number_variables=int(ceiling((bins/2)/2).

As depicted, ceiling(x) is a ceiling function which takes a real numberx and outputs an integer that is greater than or equal to x. In otherwords, the ceiling function rounds up to the nearest energy. In thisexample, int(x) is an integer function that takes the real number x andoutputs an integer that is less than or equal to x. In other words, theinteger function rounds a real number down to the nearest integer.

In this example, for six bins, the number variables, number_variables,is 2. The variables are w1 and w2 in this example.

Turning now to FIG. 3, an illustration of parts under a distributioncurve for determining dynamic ranges of bins is depicted in accordancewith an illustrative embodiment. As depicted, graph 200, havingdistribution curve 202, can be divided up into six sections in whichthree sections are present on each side of y-axis 206. The sections aresymmetrical about y-axis 206 in this example.

The variables w1 and w2 represent the distribution of data points fromthe sets of scaled first order differences that fall within section 300,section 302, section 304, section 306, section 308, and section 310. Inthis example, w1 and w2 represent the ratios of data adding up to 3 suchthat w1+w2+w3=3 on each side of y-axis 206.

Current techniques can assign 33 percent of the data to each of thesevariables and let the variables take the value of 1. In contrast, valuescan be dynamically assigned to the variables in the illustrativeexample.

In this illustrative example, the equation is solved to isolate changesin scaled first order differences that may be large enough to beundesirable. These types of changes can be made for extreme changes forthe scaled first order differences.

The difference between w2 and w1 are maximized subject to constraints.In the illustrative example, the constraints are generally modeled basedon the desired outcome to be achieved. In this illustrative example, theconstraints are, for example, w2−w1>=0; w1>=0.1; and w2*sqrt(stdev)=1.

As depicted, the constraint w2−w1>=0 is used to isolate the changes inthe scaled first order differences that are considered to be extreme.This constraint can be used to keep maximum or larger parts of thedistribution towards the middle, which is around y-axis 206.

In this depicted example, the constraint w1>=0.1 avoids cornerdistributions being smaller than desired. With a desire to make thevalue of w1 smaller, the model is instructed to not use zero or a valuethat is considered extremely small. For example, w1 can be set to equal0.10. This value means that at least 0.2 parts of 3 should go into binsfor w1.

As depicted, the constraint w2*sqrt(stdev)=1 takes into account that, asthe standard deviation becomes smaller, distribution curve 202 alsobecomes narrower, which may contain more erratic values. This constraintcan be used to isolate the changes in the scaled first order differencesthat are considered to be larger or more extreme than desired. In thismanner, more data is incorporated by the variable w2 and vice versa.

Once the optimization problem is solved, the solution (ratios of 3) canbe used to calculate all the areas under distribution curve 202 (ratiosof 6, percentage).

With reference now to FIG. 4, an illustration of bins with panic rangesis depicted in accordance with an illustrative embodiment. For example,one possible solution is to get w1=0.5 and w2=2.0, then:

0.5/6*100=8.33% of data in bin −3 in section 300, bin −1 in section 304,bin 1 in section 306, and bin 3 in section 310.

2/6*100=33.33% of data in bin −2 in section 302 and bin +2 in section308.

Turning next to FIG. 5, a flowchart of a process for demand forecastingis depicted in accordance with an illustrative embodiment. The processin FIG. 5 can be implemented in hardware, software, or both. Whenimplemented in software, the process can take the form of program codethat is run by one or more processor units located in one or morehardware devices in one or more computer systems. For example, theprocess can be implemented in model manager 108 in computer system 106in FIG. 1.

The process begins by determining sets of first order differences fortime series data within collections of time series data for products(step 500). The sets of first order differences in step 500 identify howvalues in the time series data within the collections of time seriesdata change over time. The process normalizes the sets of first orderdifferences for the time series data to form sets of scaled first orderdifferences such that a same scale is present between the sets of scaledfirst order differences (step 502).

The process determines bins with dynamic ranges for the sets of scaledfirst order differences (step 504). The dynamic ranges in step 504 arebased on a distribution of the sets of scaled first order differences.In one illustrative example, the dynamic ranges are selected to optimizean outcome of a set of variables under a set of constraints in adecision optimization model such that changes in first order differencesgreater than a threshold are isolated by the bins. Thus, the range orsize of each bin can be determined based on the sets of scaled firstorder differences for the collections of time series data. In otherwords, the sizes of the bins are not predetermined but instead based onthe analysis of the time series data.

The process places the sets of scaled first order differences into thebins to form sets of binned values for the collections of time seriesdata in which binned values in the sets of binned values are based on anumber of scaled first order differences in the bins (step 506). In step506, the scaled values for the changes in the collections of time seriesdata are placed into the bins. The process groups the collections oftime series data for the products into segments based on a correlationbetween the sets of binned values for the collections of time seriesdata (step 508). In step 508, the process determines correlationsbetween the different sets of bin values. Correlations are determinedbetween all the time series in the same collection itself. For example,when two collections of time series data are present, the correlationsare determined between first binned values for a first collection oftime series data and second binned values for a second collection oftime series data. When three collections of time series data arepresent, the correlations are determined between the first binned valuesfor a first collection of time series data and the second binned valuesfor second collections of time series data, and between the first binnedvalues for the first collection of time series data and third binnedvalues for a third collection of time series data. The correlations arealso determined between the second binned values for the secondcollection of time series data and the third binned values for the thirdcollections of time series data such that the correlations aredetermined between all of the collections of time series data.

The process creates forecasting models for the products from thesegments in which the collections of time series data are located (step510). In this example, the products in the same segment will have thesame forecasting model. The process terminates thereafter.

With reference next to FIG. 6, a flowchart of a process for groupingcollections of time series data into segments is depicted in accordancewith an illustrative embodiment. The process illustrated in FIG. 6 is anexample of one implementation for step 508 in FIG. 5.

The process begins by grouping collections of time series data forproducts into initial groups based on correlation values for sets ofbinned values for the collections of time series data being within aselected threshold of each other (step 600). The process createssubgroups from the initial groups based on slopes for the collections oftime series data in the initial groups (step 602). The processterminates thereafter. The subgroups created in step 602 form thesegments.

Turning now to FIG. 7, a flowchart of a process for creating aforecasting model from an initial collection of time series data isdepicted in accordance with an illustrative embodiment. The process inFIG. 7 can be implemented in hardware, software, or both. Whenimplemented in software, the process can take the form of program codethat is run by one or more processor units located in one or morehardware devices in one or more computer systems. For example, theprocess can be implemented in model manager 108 in computer system 106in FIG. 1. This process can be performed after collections of timeseries data have been processed and segmented for creating forecastingmodels.

The process begins by identifying an additional collection of timeseries data for an additional product (step 700). The process identifiesa current product in products with a set of binned values having ahighest correlation to an additional set of binned values for a set ofscaled first order differences for the additional collection of timeseries data (step 702). In step 702, the additional collection of timeseries data is processed to determine a set of scaled first orderdifferences from which an additional set of binned values can bedetermined.

A determination is made as to whether the correlation between theadditional collection of time series data is within a threshold of thecollection of time series data for the current product (step 704). Whenthe highest correlation is within the threshold, the process places theadditional collection of time series data into a current segment for thecurrent product in segments (step 706). In step 706, the threshold is avalue that is selected as having the lowest amount correlation that canbe present for placing the additional collection of time series datainto the segment in which the current product is located. The currentsegment can include the collection time series data for the currentproduct or can also include one or more collections of time series datafor other products and segmented with the current product.

The process creates a new forecasting model for the collections of timeseries data in the current segment when the additional collection oftime series data is placed into the current segment (step 708). Theprocess terminates thereafter

With reference again to step 704, if the highest correlation is notwithin the threshold, the process places the additional collection oftime series data into a new segment (step 710). The process creates anew forecasting model for the additional collection of time series datain the new segment when the additional collection of time series data isplaced into the new segment (step 712). The process terminatesthereafter.

Turning now to FIG. 8, a flowchart of a process for creating bins withdynamic ranges is depicted in accordance with an illustrativeembodiment. The process in FIG. 8 is an example of one manner in whichstep 504 in FIG. 5 can be implemented.

The process begins by identifying a number of bins that will be used(step 800). The number of bins in step 800 can be determined in a numberof different ways. In this illustrative example, the number of bins canbe based on a default number, a user input, or an input from anapplication. For example, if six bins are identified, the bins can belabeled as −3, −2, −1, +1, +2, and +3.

The process identifies a number of variables (step 802). In step 802, anumber of variables can be identified as follows:

number_variables=int(ceiling((bins/2)/2).

As depicted, ceiling(x) is a ceiling function which takes a real numberx and outputs an integer that is greater than or equal to x. In otherwords, the ceiling function rounds up to the nearest energy. In thisexample, int(x) is an integer function that takes the real number x andoutputs an integer that is less than or equal to x. In other words, theinteger function rounds a real number down to the nearest integer. Inthis example, for 6 bins, the number variables, number_variables, is 2.

The process adds the variables to a decision optimization model (step804). In this illustrative example, the two variables added can be var1and var2. Decision optimization uses mathematical techniques to solvedecision-making problems involving multiple decision variables, businessconstraints, and trade-offs. The problem in this example was modeled asa decision optimization problem as explained above.

The process adds constraints to the decision optimization model (step806). In this example, the constraints can be, for example, var2>=var1;var1>=0.1; and var2*sqrt(stdev)<=1. The constraints added to thedecision optimization model can be such that values add up to aconsistent number. Symmetry can be employed to allow the same values forthe plus side and the minus side. In one illustrative example, theequation constraint can be 2*var1+var2=bins/2=3 for 6 bins.

The process then adds the variables to define the optimization problem(step 808). For example, with 6 bins, the problem optimizes var2−var1.

The process solves for the variables, obtains solutions for theequation, and obtains areas under the curve (step 810). For example, thesolution can be var1=0.5 and var 2=2.0, the area under the curve canthen be determined at 0.5/6*100=8.33% of the data (bin values) in thebin and 2/6*100−33.33% of the data (bin values) in the bin. The processuses the areas under the curve to set ranges of the bins (step 812). Theprocess terminates thereafter.

The flowcharts and block diagrams in the different depicted embodimentsillustrate the architecture, functionality, and operation of somepossible implementations of apparatuses and methods in an illustrativeembodiment. In this regard, each block in the flowcharts or blockdiagrams may represent at least one of a module, a segment, a function,or a portion of an operation or step. For example, one or more of theblocks can be implemented as program code, hardware, or a combination ofthe program code and hardware. When implemented in hardware, thehardware may, for example, take the form of integrated circuits that aremanufactured or configured to perform one or more operations in theflowcharts or block diagrams. When implemented as a combination ofprogram code and hardware, the implementation may take the form offirmware. Each block in the flowcharts or the block diagrams can beimplemented using special purpose hardware systems that perform thedifferent operations or combinations of special purpose hardware andprogram code run by the special purpose hardware.

In some alternative implementations of an illustrative embodiment, thefunction or functions noted in the blocks may occur out of the ordernoted in the figures. For example, in some cases, two blocks shown insuccession can be performed substantially concurrently, or the blocksmay sometimes be performed in the reverse order, depending upon thefunctionality involved. Also, other blocks can be added in addition tothe illustrated blocks in a flowchart or block diagram.

Turning now to FIG. 9, a block diagram of a data processing system isdepicted in accordance with an illustrative embodiment. Data processingsystem 900 can be used to implement computer system 106 in FIG. 1. Inthis illustrative example, data processing system 900 includescommunications framework 902, which provides communications betweenprocessor unit 904, memory 906, persistent storage 908, communicationsunit 910, input/output (I/O) unit 912, and display 914. In this example,communications framework 902 takes the form of a bus system.

Processor unit 904 serves to execute instructions for software that canbe loaded into memory 906. Processor unit 904 includes one or moreprocessors. For example, processor unit 904 can be selected from atleast one of a multicore processor, a central processing unit (CPU), agraphics processing unit (GPU), a physics processing unit (PPU), adigital signal processor (DSP), a network processor, or some othersuitable type of processor. Further, processor unit 904 can may beimplemented using one or more heterogeneous processor systems in which amain processor is present with secondary processors on a single chip. Asanother illustrative example, processor unit 904 can be a symmetricmulti-processor system containing multiple processors of the same typeon a single chip.

Memory 906 and persistent storage 908 are examples of storage devices916. A storage device is any piece of hardware that is capable ofstoring information, such as, for example, without limitation, at leastone of data, program code in functional form, or other suitableinformation either on a temporary basis, a permanent basis, or both on atemporary basis and a permanent basis. Storage devices 916 may also bereferred to as computer-readable storage devices in these illustrativeexamples. Memory 906, in these examples, can be, for example, arandom-access memory or any other suitable volatile or non-volatilestorage device. Persistent storage 908 may take various forms, dependingon the particular implementation.

For example, persistent storage 908 may contain one or more componentsor devices. For example, persistent storage 908 can be a hard drive, asolid-state drive (SSD), a flash memory, a rewritable optical disk, arewritable magnetic tape, or some combination of the above. The mediaused by persistent storage 908 also can be removable. For example, aremovable hard drive can be used for persistent storage 908.

Communications unit 910, in these illustrative examples, provides forcommunications with other data processing systems or devices. In theseillustrative examples, communications unit 910 is a network interfacecard.

Input/output unit 912 allows for input and output of data with otherdevices that can be connected to data processing system 900. Forexample, input/output unit 912 may provide a connection for user inputthrough at least one of a keyboard, a mouse, or some other suitableinput device. Further, input/output unit 912 may send output to aprinter. Display 914 provides a mechanism to display information to auser.

Instructions for at least one of the operating system, applications, orprograms can be located in storage devices 916, which are incommunication with processor unit 904 through communications framework902. The processes of the different embodiments can be performed byprocessor unit 904 using computer-implemented instructions, which may belocated in a memory, such as memory 906.

These instructions are referred to as program code, computer usableprogram code, or computer-readable program code that can be read andexecuted by a processor in processor unit 904. The program code in thedifferent embodiments can be embodied on different physical orcomputer-readable storage media, such as memory 906 or persistentstorage 908.

Program code 918 is located in a functional form on computer-readablemedia 920 that is selectively removable and can be loaded onto ortransferred to data processing system 900 for execution by processorunit 904. Program code 918 and computer-readable media 920 form computerprogram product 922 in these illustrative examples. In the illustrativeexample, computer-readable media 920 is computer-readable storage media924.

In these illustrative examples, computer-readable storage media 924 is aphysical or tangible storage device used to store program code 918rather than a medium that propagates or transmits program code 918.

Alternatively, program code 918 can be transferred to data processingsystem 900 using a computer-readable signal media. The computer-readablesignal media can be, for example, a propagated data signal containingprogram code 918. For example, the computer-readable signal media can beat least one of an electromagnetic signal, an optical signal, or anyother suitable type of signal. These signals can be transmitted overconnections, such as wireless connections, optical fiber cable, coaxialcable, a wire, or any other suitable type of connection.

Further, as used herein, “computer-readable media 920” can be singularor plural. For example, program code 918 can be located incomputer-readable media 920 in the form of a single storage device orsystem. In another example, program code 918 can be located incomputer-readable media 920 that is distributed in multiple dataprocessing systems. In other words, some instructions in program code918 can be located in one data processing system while otherinstructions in program code 918 can be located in one data processingsystem. For example, a portion of program code 918 can be located incomputer-readable media 920 in a server computer while another portionof program code 918 can be located in computer-readable media 920located in a set of client computers.

The different components illustrated for data processing system 900 arenot meant to provide architectural limitations to the manner in whichdifferent embodiments can be implemented. In some illustrative examples,one or more of the components may be incorporated in or otherwise form aportion of, another component. For example, memory 906, or portionsthereof, may be incorporated in processor unit 904 in some illustrativeexamples. The different illustrative embodiments can be implemented in adata processing system including components in addition to or in placeof those illustrated for data processing system 900. Other componentsshown in FIG. 9 can be varied from the illustrative examples shown. Thedifferent embodiments can be implemented using any hardware device orsystem capable of running program code 918.

Thus, illustrative embodiments of the present invention provide acomputer-implemented method, computer system, and computer programproduct for demand forecasting. In the illustrative example, collectionsof time series data for products are placed into segments. Each of thesegments can be used to generate a forecasting model used to predictdemand for products within the segment. In one illustrative example,sets of first order differences are determined by a computer system fortime series data within the collections of time series data for theproducts. The sets of first order differences identify how values in thetime series data within the collections of time series data change overtime. The sets of first order differences for the time series data arenormalized by the computer system to form sets of scaled first orderdifferences such that a same scale is present between the sets of scaledfirst order differences. Bins with dynamic ranges are determined by thecomputer system for the sets of scaled first order differences, whereinthe dynamic ranges are based on a distribution of the sets of scaledfirst order differences. The sets of scaled first order differences areplaced into the bins by the computer system to form sets of binnedvalues for the collections of time series data in which binned values inthe sets of binned values are based on a number of scaled first orderdifferences in the bins. The collections of time series data for theproducts are grouped into segments by the computer system based on acorrelation between the sets of binned values for the collections oftime series data.

In this manner, data in the collections of time series data can besegmented with a forecasting model being created for each segment ofdata. Thus, the illustrative embodiments provide an automated system fordemand forecasting in which segmentation can be performed using binswith dynamic ranges as described in the illustrative examples.

In illustrative example, the first order difference is extracted todetermine how the values are changing from time period to time periodinstead of just comparing across absolute values as with currenttechniques. Further, the illustrative example normalizes these values toexpress their relative magnitude of change over time. The first orderdifferences are then placed into bins using dynamic range binning in anautomated fashion to isolate the extreme changes in the time series. Thedynamic range can be dynamically selected to have sizes to achievedesired results such as isolating changes that are greater than desiredin the collections of time series data as determined from sets of scaledfirst order differences. Further, the binning of data in bins withdynamic ranges also can be used to reduce the granularity of the data.The correlation between the bin data is determined, and products thathave a desirable correlation can be grouped into segments for use inbuilding forecasting models on a per segment basis.

The forecasting models created using the data in the segments can enablebetter forecasting of demand for products. With improved forecastingabilities, companies with supply chains can increase the efficiency inwhich inventory is managed. This type of forecasting can be used invarious industries including retail, software, industrial, automobilemanufacturing, pharmaceutical, and other industries.

The description of the different illustrative embodiments has beenpresented for purposes of illustration and description and is notintended to be exhaustive or limited to the embodiments in the formdisclosed. The different illustrative examples describe components thatperform actions or operations. In an illustrative embodiment, acomponent can be configured to perform the action or operationdescribed. For example, the component can have a configuration or designfor a structure that provides the component an ability to perform theaction or operation that is described in the illustrative examples asbeing performed by the component. Further, to the extent that terms“includes”, “including”, “has”, “contains”, and variants thereof areused herein, such terms are intended to be inclusive in a manner similarto the term “comprises” as an open transition word without precludingany additional or other elements.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Not allembodiments will include all of the features described in theillustrative examples. Further, different illustrative embodiments mayprovide different features as compared to other illustrativeembodiments. Many modifications and variations will be apparent to thoseof ordinary skill in the art without departing from the scope and spiritof the described embodiment. The terminology used herein was chosen tobest explain the principles of the embodiment, the practical applicationor technical improvement over technologies found in the marketplace, orto enable others of ordinary skill in the art to understand theembodiments disclosed here.

What is claimed is:
 1. A method for demand forecasting, the methodcomprising: determining, by a computer system, sets of first orderdifferences for time series data within collections of time series datafor products, wherein the sets of first order differences identify howvalues in the time series data within the collections of time seriesdata change over time; normalizing, by the computer system, the sets offirst order differences for the time series data to form sets of scaledfirst order differences such that a same scale is present between thesets of scaled first order differences; determining, by the computersystem, bins with dynamic ranges for the sets of scaled first orderdifferences, wherein dynamic ranges are based on a distribution of thesets of scaled first order differences; placing, by the computer system,the sets of scaled first order differences into the bins to form sets ofbinned values for the collections of time series data in which binnedvalues in the sets of binned values are based on a number of scaledfirst order differences in the bins; and grouping, by the computersystem, the collections of time series data for the products intosegments based on a correlation between the sets of binned values forthe collections of time series data.
 2. The method of claim 1 furthercomprising: creating, by the computer system, forecasting models for theproducts from the segments in which the collections of time series dataare located.
 3. The method of claim 1, wherein determining, by thecomputer system, the bins with dynamic ranges for the sets of scaledfirst order differences, wherein the dynamic ranges are based on thedistribution of the sets of scaled first order differences comprises:determining, by the computer system, the bins with the dynamic rangesbased the distribution of the sets of scaled first order differences,wherein the dynamic ranges are selected to optimize an outcome of a setof variables under a set of constraints in a decision optimization modelsuch that changes in first order differences greater than a thresholdare isolated by the bins.
 4. The method of claim 1, wherein grouping, bythe computer system, the collections of time series data for theproducts into the segments based on the correlation between the sets ofbinned values for the collections of time series data comprises:grouping, by the computer system, the collections of time series datafor the products into initial groups based on correlation values for thesets of binned values for the collections of time series data being witha selected threshold of each other; and creating, by the computersystem, subgroups from the initial groups based on slopes for thecollections of time series data in the initial groups, wherein thesubgroups form the segments.
 5. The method of claim 1 furthercomprising: identifying, by the computer system, an additionalcollection of time series data for an additional product; identifying,by the computer system, a current product in the products with a set ofbinned values having a highest correlation to an additional set ofbinned values for a set of scaled first order differences for theadditional collection of time series data; placing, by the computersystem, the additional collection of time series data into a currentsegment for the current product in the segments when the highestcorrelation is within a threshold; and placing, by the computer system,the additional collection of time series data into a new segment whenthe highest correlation is not within the threshold.
 6. The method ofclaim 5 further comprising: creating, by the computer system, a newforecasting model for the collections of time series data in the currentsegment when the additional time series data is placed into the currentsegment.
 7. The method of claim 5 further comprising: creating, by thecomputer system, a new forecasting model for an additional collection oftime series data in the new segment when the additional collection oftime series data is placed into the new segment.
 8. A demand forecastingsystem comprising: a computer system that operates to: determine sets offirst order differences for time series data within collections of timeseries data for products, wherein the sets of first order differencesidentify how values in the time series data within the collections oftime series data change over time; normalize the sets of first orderdifferences for the time series data to form sets of scaled first orderdifferences such that a same scale is present between the sets of scaledfirst order differences; determine bins with dynamic ranges for the setsof scaled first order differences, wherein the dynamic ranges are basedon a distribution of the sets of scaled first order differences; placethe sets of scaled first order differences into the bins to form sets ofbinned values for the collections of time series data in which binnedvalues in the sets of binned values are based on a number of scaledfirst order differences in the bins; and group the collections of timeseries data for the products into segments based on a correlationbetween the sets of binned values for the collections of time seriesdata.
 9. The demand forecasting system of claim 8, wherein the computersystem operates to: create forecasting models for the products from thesegments in which the collections of time series data are located. 10.The demand forecasting system of claim 8, wherein in determining thebins with the dynamic ranges for the sets of scaled first orderdifferences, wherein the dynamic ranges are based on the distribution ofthe sets of scaled first order differences, the computer system operatesto: determine the bins with the dynamic ranges based the distribution ofthe sets of scaled first order differences, wherein the dynamic rangesare selected to optimize an outcome of a set of variables under a set ofconstraints in a decision optimization model such that changes in firstorder differences greater than a threshold are isolated by the bins. 11.The demand forecasting system of claim 8, wherein in grouping thecollections of time series data for the products into the segments basedon the correlation between the sets of binned values for the collectionsof time series data, the computer system operates to: group thecollections of time series data for the products into initial groupsbased on correlation values for the sets of binned values for thecollections of time series data being with a selected threshold of eachother; and create subgroups from the initial groups based on slopes forthe collections of time series data in the initial groups, wherein thesubgroups form the segments.
 12. The demand forecasting system of claim8, wherein the computer system operates to: identify an additionalcollection of time series data for an additional product; identify acurrent product in the products with a set of binned values having ahighest correlation to an additional set of binned values for a set ofscaled first order differences for the additional collection of timeseries data; place the additional collection of time series data into acurrent segment for the current product in the segments when the highestcorrelation is within a threshold; and place the additional collectionof time series data into a new segment when the highest correlation isnot within the threshold.
 13. The demand forecasting system of claim 12,wherein the computer system operates to: create a new forecasting modelfor the collections of time series data in the current segment when theadditional collection of time series data is placed into the currentsegment.
 14. The demand forecasting system of claim 12, wherein thecomputer system operates to: create a new forecasting model for theadditional collection of time series data in the new segment when theadditional collection of time series data is placed into the newsegment.
 15. A computer program product for demand forecasting, thecomputer program product comprising: a computer-readable storage media;first program code, stored on the computer-readable storage media,executable by a computer system to cause the computer system todetermine sets of first order differences for time series data withincollections of time series data for products, wherein the sets of firstorder differences identify how values in the time series data within thecollections of time series data change over time; second program code,stored on the computer-readable storage media, executable by thecomputer system to cause the computer system to normalize the sets offirst order differences for the time series data to form sets of scaledfirst order differences such that a same scale is present between thesets of scaled first order differences; third program code, stored onthe computer-readable storage media, executable by the computer systemto cause the computer system to determine bins with dynamic ranges forthe sets of scaled first order differences, wherein the dynamic rangesare based on a distribution of the sets of scaled first orderdifferences; fourth program code, stored on the computer-readablestorage media, executable by the computer system to cause the computersystem to place the sets of scaled first order differences into the binsto form sets of binned values for the collections of time series data inwhich binned values in the sets of binned values are based on a numberof scaled first order differences in the bins; and fifth program code,stored on the computer-readable storage media, executable by thecomputer system to cause the computer system to group the collections oftime series data for the products into segments based on a correlationbetween the sets of binned values for the collections of time seriesdata.
 16. The computer program product of claim 15 further comprising:sixth program code, stored on the computer-readable storage media,executable by the computer system to cause the computer system to createforecasting models for the products from the segments in which thecollections of time series data are located.
 17. The computer programproduct of claim 15, wherein the third program code comprises: programcode, stored on the computer-readable storage media, executable by thecomputer system to cause the computer system to determine the bins withthe dynamic ranges based the distribution of the sets of scaled firstorder differences, wherein the dynamic ranges are selected to optimizean outcome of a set of variables under a set of constraints in adecision optimization model such that changes in first order differencesgreater than a threshold are isolated by the bins.
 18. The computerprogram product of claim 15, wherein the fifth program code comprises:program code, stored on the computer-readable storage media, executableby the computer system to cause the computer system to group thecollections of time series data for the products into initial groupsbased on correlation values for the sets of binned values for thecollections of time series data being with a selected threshold of eachother; and program code, stored on the computer-readable storage media,executable by the computer system to cause the computer system to createsubgroups from the initial groups based on slopes for the collections oftime series data in the initial groups, wherein the subgroups form thesegments.
 19. The computer program product of claim 15 furthercomprising: sixth program code, stored on the computer-readable storagemedia, executable by the computer system to cause the computer system toidentify an additional collection of time series data for an additionalproduct; seventh program code, stored on the computer-readable storagemedia, executable by the computer system to cause the computer system toidentify a current product in the products with a set of binned valueshaving a highest correlation to an additional set of binned values for aset of scaled first order differences for the additional collection oftime series data; eighth program code, stored on the computer-readablestorage media, executable by the computer system to cause the computersystem to place the additional collection of time series data into acurrent segment for the current product in the segments when the highestcorrelation is within a threshold; and ninth program code, stored on thecomputer-readable storage media, executable by the computer system tocause the computer system to place the additional collection of timeseries data into a new segment when the highest correlation is notwithin the threshold.
 20. The computer program product of claim 19further comprising: tenth program code, stored on the computer-readablestorage media, executable by the computer system to cause the computersystem to create a new forecasting model for the collections of timeseries data in the current segment when the additional collection oftime series data is placed into the current segment; and eleventhprogram code, stored on the computer-readable storage media, executableby the computer system to cause the computer system to create a newforecasting model for the additional collection of time series data inthe new segment when the additional collection of time series data isplaced into the new segment.